// Copyright 2022 a.o.smith ALL Rights Reserved
package com.liuxinlong.modules.chimi.service;

import com.liuxinlong.modules.entity.BarPointsFlow;

import java.util.List;
import java.util.Map;

/**
 * 论坛积分流水服务层接口
 *
 * @author liuxinlong@hotwater.com.cn
 * @version 1.0.0
 * @since 2023-02-13
 */
public interface BarPointsFlowService {
    /**
     * 分页查询积分流水信息
     *
     * @param queryParam 请求信息
     * @return 积分流水信息列表
     */
    List<Map<String, Object>> pagePointsFlow(Map<String, Object> queryParam);

    /**
     * 查询积分流水总数
     *
     * @param queryParam 请求信息
     * @return 积分流水总数
     */
    int getPointsFlowCount(Map<String, Object> queryParam);

    /**
     * 新增论坛积分流水
     *
     * @param barPointsFlow 论坛积分流水
     */
    void addPointsFlow(BarPointsFlow barPointsFlow);

    /**
     * 更新论坛积分流水
     *
     * @param barPointsFlow 论坛积分流水
     */
    void updatePointsFlow(BarPointsFlow barPointsFlow);

    /**
     * 删除论坛积分流水
     *
     * @param id 积分流水id
     */
    void deletePointsFlow(String id);

    /**
     * 校正用户积分数据
     */
    int checkUserPoints();

    /**
     * 批量修改积分流水
     *
     * @param sourceType 积分来源
     * @param targetPoints 目标值
     * @param startTime 开始时间
     * @param endTime 截止时间
     */
    void updateBatchPointsFlow(int sourceType,int targetPoints,String startTime,String endTime);

    /**
     * 查询积分排名列表
     *
     * @param queryParam 查询信息
     * @return 积分排名列表
     */
    List<Map<String,Object>> pagePointsRanking(Map<String,Object> queryParam);

    /**
     * 查询积分排名数量
     *
     * @param queryParam 查询信息
     * @return 积分排名数量
     */
    int getPointsRankingCount(Map<String,Object> queryParam);

    /**
     * 修改积分排名配置
     *
     * @param id 用户id
     */
    void updatePointsRanking(String id);
}
